There are many situations where different users need to collaborate and work together in a coordinated fashion. As an example, users at different locations may need to collaborate to generate a report or presentation. The generation of the report or presentation may involve use of many different software applications. For example, a text editor may be used to generate text for the report while a graphics program is used to generate graphics and a photo editing program is used to generate or manipulate images. Collaboration software helps to facilitate collaboration by users at different locations by providing a shared workspace on a server in which the users collaborate. The workspace contains work items on which the users collaborate, such as text files, spreadsheets and images. Users of the collaborative workspace may add, delete or edit work items. A client application at each user device communicates with the collaboration software at the server and provides each user with a view of the same workspace.
One problem frequently encountered in collaborative systems is maintaining synchronization between client devices and the shared workspace at the server. Lack of synchronization may cause conflicts between users. For example, if synchronization is not maintained, a user may attempt to edit a document that has been deleted by another user. Therefore, it is necessary to maintain synchronization in real time or near real time between client devices and the shared workspace.